package high;

import java.sql.Time;
import java.util.concurrent.TimeUnit;

/**
 * volatile可以保证数据的可见性，数据发生变化，子线程能监控到数据更新
 * 使用synchronized锁也可以实现
 */
public class Volatile {
    public static Boolean always=true;
    public static void main(String[] args) throws InterruptedException {
        new Thread(()->{
            while (always) {
                //System.out.println("always");         //添加输出语句，不会发生不可见问题，因为System.out.println 是一个同步方法，在执行同步方法时，线程会刷新工作内存中的变量，从主内存中读取最新的值
            }
        }).start();
        TimeUnit.SECONDS.sleep(1);
        always = false;
    }
}
